﻿using System;

namespace Mbs.Messaging
{
    public interface IMessageListner:IListner,IDisposable
    {
        void OnObserverAdding(object observer, string topic, Type messageType);
        void OnObserverRemoving(object observer, string topic, Type messageType);
        void OnObserverAdded(object observer, string topic, Type messageType);
        void OnObserverRemoved(object observer, string topic, Type messageType);

        void OnPreFilterAdding(object observer, string topic, Type messageType);
        void OnPreFilterRemoving(object observer, string topic, Type messageType);
        void OnPreFilterAdded(object observer, string topic, Type messageType);
        void OnPreFilterRemoved(object observer, string topic, Type messageType);

        void OnFilterAdding(object observer, string topic, Type messageType);
        void OnFilterRemoving(object observer, string topic, Type messageType);
        void OnFilterAdded(object observer, string topic, Type messageType);
        void OnFilterRemoved(object observer, string topic, Type messageType);

        void OnSending(object sender, SendingEventArgs e);
        void OnSent(object sender, MessageEventArgs e);

        void OnReceivingException(object sender, ReceivingExceptionEventArgs e);
        void OnReceiving(object sender, ReceivingEventArgs e);
        void OnReceived(object sender, MessageEventArgs e);
    }
}
